package org.duiduo.util;

import cn.hutool.core.util.StrUtil;
import org.duiduo.api.consts.DataConstant;
import org.noear.solon.core.handle.Context;

import java.util.HashMap;
import java.util.Map;

/**
 * 上下文工具类
 *
 * @author liangze
 * @date 2025/9/29 17:32
 */
public class ContextUtil {

    /**
     * 获取请求上下文
     *
     * @return 请求上下文
     */
    public static Context getContext() {
        return Context.current();
    }

    /**
     * 获取客户端 IP
     *
     * @return 客户端 IP
     */
    public static String getIpAddr() {
        try {
            // 请求上下文
            Context ctx = getContext();
            return ctx.realIp();
        } catch (Exception e) {
            return DataConstant.IP_UNKNOWN;
        }
    }

    /**
     * 获取请求头
     *
     * @param headers 请求头key值
     * @return 请求头
     */
    public static Map<String, String> getHeaders(String... headers) {
        // 请求上下文
        Context ctx = getContext();
        Map<String, String> map = new HashMap<>();
        for (Map.Entry<String, String> stringStringEntry : ctx.headerMap().toValueMap().entrySet()) {
            // 鉴权请求头（Http协议规定了请求头大小写不敏感）
            if (StrUtil.equalsAnyIgnoreCase(stringStringEntry.getKey(), headers)) {
                map.put(stringStringEntry.getKey(), stringStringEntry.getValue());
            }
        }
        return map;
    }

}
